<?php
/**
 * Classe gérant les formatages de données sous format log
 * @version 0.1
 * author Jonathan Rotini <jonathan.rotini@gmail.com>
 * @Copyright Copyleft
 * @license GNU/GPL
 * @see Format
 */
final class FormatForLog extends Format
{       
        /**
         * la chaine de caractère contenant l'adresse IP du client
         * @access protected
         * @var string
         */
        protected $_client;
        public function getClient(){ return $this->_client; }
        /**
         * la chaine de caractère contenant la date à laquelle le log à était généré
         * @access protected
         * @var string
         */
        protected $_date;
        public function getDate(){ return $this->_date; }
        /**
         * la chaine de caractère contenant le type de log à reporté
         * @access protected
         * @var string
         */
        protected $_log_type;
        public function getErrorType(){ return $this->_log_type; }
        /**
     * Constructeur de la classe, permet d'initialiser tous les donnée membres de la classe
     * @since 0.1
     * @access public
     * @param void
     * @return void
     */
        public function __construct($data, Array $opt = array())
        {
                parent::__construc($data, $opt);
                $this->_date = "[".date("D M j H:i:s Y")."]";
                $this->_log_type = defined("CATCH_OBJECT_ERROR") ? CATCH_OBJECT_ERROR :"[Catched object error]";
                $this->_client = "[client ".$_SERVER["REMOTE_ADDR"]."]";
        }
        /**
     * Destructeur de la classe, libére toute les ressources de l'objet
     * @since 0.1
     * @access public
     * @param void
     * @return void
     */
        public function __destruct()
        {
                parent::__destruct();
                unset($this->_date, $this->_log_type, $this->_client);
        }
        /**
     * La fonction permetant d'afficher les données membre de manière lisible. exemple : echo $object
     * @since 0.1
     * @access public
     * @param void
     * @return String
     */
        public function __toString()
        {
                $content = "Date : ".$this->_date."<br>
                                        Client : ".$this->_client."<br>
                                        Error type : ".$this->_log_type."<br>
                                        Error : ".$this->_log_txt."<br>";
                return $content;
        }
        /**
     * Format le text passé en paramètre en log type.
     * @since 0.1
     * @access public
     * @param String $txt
     * @return String
     */
        public function format()
        {
                $txt = $this->_date." ".$this->_log_type." ".$this->_client." ".$this->_data."\n";
                return $txt;
        }
}
?>
